package com.liangtian.mdm.dm.config.service;

import com.liangtian.mdm.dm.config.model.AttrConfig;
import com.liangtian.mdm.dm.model.model.Model;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public interface AttrConfigService {

    /**
     * 根据model_id查询所有未删除属性的设置
     * 查询表am_attr_config
     *
     * @param model_id
     * @return
     */
    public PageInfo queryAttributesList(Map<String, Object> param);

    public void updateAttrConfig(AttrConfig t);

    public AttrConfig queryAttrConfig(String model_id, String attr_id);

    /**
     * 查询数据来源模型，model_type为分类模型类型字段
     * 0-主数据，1-字典表，2-树
     * 查询表 am_model
     *
     * @param model_type
     * @return
     */
    public List<Model> queryAllModelTables(String model_type, String model_id);

    /**
     * * <p>Title: 查询是否 </p>
     * <p>Company:@param modelId
     * <p>Company:@param isP
     * <p>Company:@return </p>
     *
     * @author : xiaoliu
     * @date :2016年8月31日上午10:43:42
     */
    public List<AttrConfig> queryAttributesListIsParent(Map<String, String> map);

    /**
     * 根据模型ID，查询数据来源属性
     * 查询表 am_attribute
     *
     * @param model_id
     * @return
     */
    public List<AttrConfig> queryModelTable4Column(String model_id);

    /**
     * 根据模型ID，查询已经设置属性类型的字段
     * 查询表am_attr_config
     *
     * @param model_id
     * @return
     */
    public List<AttrConfig> queryCascadeAttr(String model_id);

    /**
     * 根据选中的来源模型和属性，动态查询展示在选择设置型的值属性列
     *
     * @param sql
     * @return
     */
    public List<Map> querySelectedAttr(String sql);

    public List<AttrConfig> queryAttr(String s);

    public Model queryModelType(String s);

    public List<AttrConfig> initHyCodeValues(Map<String, Object> param);

    /**
     * 查询一个模型里编码类型的属性
     *
     * @return
     */
    public List<AttrConfig> queryCodeAttrs(Map<String, Object> param);

    /**
     * 校验用户输入的表名是否正确
     * (主要是针对非动态模型的)
     *
     * @return
     */
    public boolean checkTabNoNameValide(String tableName);

    /**
     * 校验用户输入的表名是正确的情况下
     * (查询该表中所有属性列)
     *
     * @return
     */
    public List<AttrConfig> queryTabNoNameColumns(String tableName);

}
